+2005-11-18 Matthias Clasen <mclasen@redhat.com>
+
+ Turn off input methods in invisible entries, since
+ they are confusing. (#317002, James Su)
+
+ * gtk/gtkentry.c (gtk_entry_set_visibility): Toggle input
+ methods if visibility changes.
+ (popup_targets_received): Don't show the input method
+ menu if the entry is invisible.
+
2005-11-17 Matthias Clasen <mclasen@redhat.com>
* README.in: Add a note about range arrow sensitivity.
+2005-11-18 Matthias Clasen <mclasen@redhat.com>
+
+ Turn off input methods in invisible entries, since
+ they are confusing. (#317002, James Su)
+
+ * gtk/gtkentry.c (gtk_entry_set_visibility): Toggle input
+ methods if visibility changes.
+ (popup_targets_received): Don't show the input method
+ menu if the entry is invisible.
+
2005-11-17 Matthias Clasen <mclasen@redhat.com>
* README.in: Add a note about range arrow sensitivity.
{
g_return_if_fail (GTK_IS_ENTRY (entry));
- entry->visible = visible ? TRUE : FALSE;
- g_object_notify (G_OBJECT (entry), "visibility");
- gtk_entry_recompute (entry);
+ visible = visible != FALSE;
+
+ if (entry->visible != visible)
+ {
+ if (GTK_WIDGET_HAS_FOCUS (entry) && !visible)
+ gtk_im_context_focus_out (entry->im_context);
+
+ g_object_unref (entry->im_context);
+
+ if (visible)
+ entry->im_context = gtk_im_multicontext_new ();
+ else
+ entry->im_context = gtk_im_context_simple_new ();
+
+ g_signal_connect (entry->im_context, "commit",
+ G_CALLBACK (gtk_entry_commit_cb), entry);
+ g_signal_connect (entry->im_context, "preedit_changed",
+ G_CALLBACK (gtk_entry_preedit_changed_cb), entry);
+ g_signal_connect (entry->im_context, "retrieve_surrounding",
+ G_CALLBACK (gtk_entry_retrieve_surrounding_cb), entry);
+ g_signal_connect (entry->im_context, "delete_surrounding",
+ G_CALLBACK (gtk_entry_delete_surrounding_cb), entry);
+
+ if (GTK_WIDGET_HAS_FOCUS (entry) && visible)
+ gtk_im_context_focus_in (entry->im_context);
+
+ entry->visible = visible;
+
+ g_object_notify (G_OBJECT (entry), "visibility");
+ gtk_entry_recompute (entry);
+ }
}
/**
"gtk-show-input-method-menu", &show_input_method_menu,
"gtk-show-unicode-menu", &show_unicode_menu,
NULL);
-
+
+ if (!entry->visible)
+ show_input_method_menu = FALSE;
+
if (show_input_method_menu || show_unicode_menu)
{
menuitem = gtk_separator_menu_item_new ();